#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
//fopen  fwrite
// int main()
// {
//     FILE*fp=fopen("myfile","a");
//     if(fp==NULL)
//     {
//         perror("fopen");
//         return;
//     }
//     const char*msg="hello file";
//     int n=fwrite(msg,strlen(msg),1,fp);
//     if(n==0)
//         perror("fwrite");
    
//     fclose(fp);    
//     return 0;
// }

//fopen fread
// int main()
// {
//     FILE*fp=fopen("myfile","r");
//     if(fp==NULL)
//     {
//         perror("fopen");
//         return;
//     }
//     char buf[128];
//     char*msg="hello Linux";
//     while(1)
//     {
//         size_t s=fread(buf,1,strlen(msg),fp);
//         if(s>0)
//         {
//             buf[s]=0;
//             printf("%s\n",buf);
//         }
//         if(feof(fp))
//             break;
//     }
//     fclose(fp);
//     return 0;
// }

//open read
// int main()
// {
//     int fd=open("myfile",O_RDONLY);
//     if(fd<0)
//     {
//         perror("open");
//         return 1;
//     }
//     const char* msg="hello Linux!";
//     printf("strlen:%d",strlen(msg));
//     // printf("sizeof:%d",sizeof(msg));

//     char buf[128];
//     while(1)
//     {
//         ssize_t s=read(fd,buf,strlen(msg));
//         if(s>0)
//         {
//             buf[s]=0;
//             printf("%s\n",buf);
//         }
//         else
//             break;
            
//     }
//     close(fd);
//     return 0;
// }


// int main()
// {
//     FILE*fp=fopen("myfile","w");
//     int fd=open("myfile",O_WRONLY,O_CREAT,0666);
//     if(fd<0)
//     {
//         perror("open");
//         return 1;
//     }
//     const char*msg="hello Linux!";
//     write(fd,msg,strlen(msg));

//     return 0;
// }

// int main()
// {
//     char buf[128];
//     ssize_t s=read(0,buf,sizeof(buf));
//     if(s>0)
//     {
//         buf[s]=0;
//         write(1,buf,strlen(buf));
//         write(2,buf,strlen(buf));
//     }
//     else
//     {
//         perror("read");`
//         return 1;
//     }
    
//     return 0;
// }

// int main()
// {
//     int fd=open("myfile",O_RDONLY);
//     printf("fd:%d\n",fd);
//     close(fd);
//     return 0;;
// }

// int main()
// {
//     const char*msg1="hello printf!\n";
//     const char*msg2="hello fwrite!\n";
//     const char*msg3="hello write!\n";
//     const char*msg4="hello fprintf!\n";
//     printf("%s",msg1);
//     fprintf(stdout,"%s",msg4);
//     fwrite(msg2,strlen(msg2),1,stdout);

//     close(1);

//     write(1,msg3,strlen(msg3));
//     // fork();
//     return 0;
// }

// int main()
// {
//     close(0);
//     int fd=open("myfile",O_RDONLY);
//     if(fd<0)
//     {
//         perror("open");
//         return 1;
//     }
//     printf("fd:%d\n",fd);
//     close(fd);
//     return 0;
// }


// int main()
// {
//     close(1);
//     int fd=open("myfile",O_WRONLY|O_CREAT,0666);
//     if(fd<0)
//     {
//         perror("open");
//         return 1;
//     }
//     printf("fd:%d\n",fd);
//     fflush(stdout);
//     close(fd);
//     return 0;
// }

int main()
{
    int fd=open("myfile",O_RDWR|O_CREAT);
    if(fd<0)
    {
        perror("open");
        return 1;
    }
    close(1);
    dup2(fd,1);
    while(1)
    {
        char buf[128]={0};
        ssize_t s=read(0,buf,sizeof(buf));
        if(s<0)
        {
            perror("read");
            return;
        }
        printf("%s",buf);
        fflush(stdout);
    }
    
    return 0;
}